/**
 * Flink任务类型 
 * 对应后端的  org.lzfto.flink.demo.business.flinkTest.test.enums.FlinkTest
 */

const FLINK_TEST_LOAD_CSV = 1;   // 加载CSV文件测试任务
const FLINK_TEST_STD_JDBC_TEST = 2;  // 标准JDBC测试任务
const FLINK_TEST_CUST_JDBC_TEST = 3;  // 自定义JDBC测试任务,加载前可以使用连接器删除目标表数据
const FLINK_TEST_LOAD_EXCEL = 4;      //自定义EXCEL加载器测试 
const FLINK_TEST_FROMMQTT_SINKTOJDBC = 5;  //自定义MQTT源测试，写入到数据库
const FLINK_TEST_FROMMQTT_SINKTOWEBSOCKET = 6; //自定义MQTT源测试，写入到WebSocket,中间有逻辑分区计算
const FLINK_TEST_FROMMQTT_PARTITION = 7; //自定义MQTT源测试，写入到WebSocket，中间有物理分区计算
const FLINK_TEST_DAMENG_JDBC = 8; //从达梦数据库读取数据，并写入到达梦数据库中
const FLINK_TEST_CLICK_AND_WATERMARK = 9; //测试水印和边路输出

/**
 * 运行Flink 测试任务
 * @param {*} taskId 任务id
 * @param {*} callback  回调函数，当任务执行完成后调用
 * @param {*} params 任务参数,可选
 */
function runTask(taskId, callback, params) {
    if (params) {
        fetch('/flink-tests/run/' + taskId, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                "auth2045": getLoginToken()
            },
            body: JSON.stringify(params)
        })
            .then(response => response.json())
            .then(data => {
                addMessageToFlinkOut(data.message);
                if (data.flag == 1) {
                    if (callback) {
                        callback();
                    }
                }
            });
    } else {
        fetch('/flink-tests/run/' + taskId, {
            method: 'GET',
            headers: {
                "auth2045": getLoginToken()
            }
        })
            .then(response => response.json())
            .then(data => {
                addMessageToFlinkOut(data.message);
                if (data.flag == 1) {
                    if (callback) {
                        callback();
                    }
                }
            });
    }
}


/**
 * 停止MQTT任务
 * @param {*} callback 回调函数
 */
function stopMqttTask(taskId, callback) {
    fetch('/flink-tests/stopMqtt?taskId=' + taskId, {
        method: 'GET',
        headers: {
            "auth2045": getLoginToken()
        }
    })
        .then(response => response.json())
        .then(result => {
            addMessageToFlinkOut(result.message);
            if (result.data && callback) {
                callback(result);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('停止MQTT任务失败');
        });
}